package com.tlspringboot.demo_redis03.domian;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;

//关联集合
@Data    //lombok中的用法 ,这条不加的话会插入，但是不会返回控制台数据，只会返回com.tlspringboot.demo_redis03.domian.Student@53a301f3

/*
使用 @Data 的优势：
    • 简化代码：减少了大量手写的 getter、setter、toString()、equals() 和 hashCode() 方法，避免了冗长的代码，提升了代码的可读性和维护性。
    • 适用于简单的 POJO 类：特别适合那些需要存储数据的类，比如用于传输的实体类或 DTO（数据传输对象）。


Lombok 的主要作用包括：
    1. 生成 getter 和 setter 方法：使用 @Getter 和 @Setter 注解，自动生成类的字段访问方法。
    2. 构造方法生成：使用 @AllArgsConstructor 和 @NoArgsConstructor 注解，自动生成带有所有参数或无参数的构造方法。
    3. toString 方法：使用 @ToString 注解，自动生成 toString() 方法。
    4. equals 和 hashCode 方法：使用 @EqualsAndHashCode 注解，自动生成这两个方法。
    5. Builder 模式：使用 @Builder 注解，简化对象的创建过程，支持链式调用。
    6. @Slf4j 等日志注解：自动生成日志记录器（例如：private static final Logger log = LoggerFactory.getLogger(YourClass.class)）。

* */

@Document("itpuxt1")
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private  String id;
    private String userName;
    private int age;

//id会自动创建

    public String getName() {
        return userName;
    }

    public void setName(String name) {
        this.userName = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    public Student(String name, int age) {
        this.userName = name;
        this.age = age;
    }
}
